package com.whfc.fse.param.msg;

import lombok.Data;

/**
 * @Description: 特种设备消息
 * @author: xugcheng
 * @version: 1.0
 * @date: 2020/5/21 14:15
 */
@Data
@Deprecated
public abstract class FseMsg {

    /**
     * 帧头:$ (1byte)
     */
    private int frameHeader;

    /**
     * 操作类型(1-byte):R,W
     */
    private int opType;

    /**
     * 数据长度(2-byte):不包含crcData
     */
    private int dataLenth;

    /**
     * 设备SN(12byte) : Ascii码字符串
     */
    private String sn;

    /**
     * 版本号(1-byte):高4位-硬件版本号,低4位-协议版本号
     */
    private int ver;

    /**
     * 指令(2-byte)
     */
    private int cmd;

    /**
     * 设备型号(1-byte)
     */
    private int dModel;

    /**
     * 包序号(1-byte)
     */
    private int pid;

    /**
     * 包头校验(2-byte)
     */
    private int crcHead;

    /**
     * 包头校验是否成功
     */
    private boolean crcHeadSuccess;

    /**
     * 数据校验
     */
    private int crcData;

    /**
     * 校验是否成功
     */
    private boolean crcDataSuccess;

    /**
     * 是否解析成功
     */
    private boolean parseSuccess;

    /**
     * 硬件类型
     */
    private Integer deviceType;

    /**
     * 获取消息总长度
     *
     * @return
     */
    public int getTotalLength() {
        //数据长度为0时,没有crc校验值.
        int crcDataLength = this.dataLenth > 0 ? 2 : 0;
        int totalLength = FseMsgConst.FRAME_HEADER_LENGTH + this.dataLenth + crcDataLength;
        return totalLength;
    }
}
